#ifndef __dom_h__
#define __dom_h__

/* Forward Declarations */

struct ENUMDESC;

/* header files for imported files */
#include "types.h"

/* header files for imported files */
#include "element.h"

#ifndef __IHTMLDOMNode_FWD_DEFINED__
#define __IHTMLDOMNode_FWD_DEFINED__
typedef interface IHTMLDOMNode IHTMLDOMNode;
#endif     /* __IHTMLDOMNode_FWD_DEFINED__ */

#ifndef __IHTMLDOMNode2_FWD_DEFINED__
#define __IHTMLDOMNode2_FWD_DEFINED__
typedef interface IHTMLDOMNode2 IHTMLDOMNode2;
#endif     /* __IHTMLDOMNode2_FWD_DEFINED__ */

#ifndef __IHTMLDOMAttribute_FWD_DEFINED__
#define __IHTMLDOMAttribute_FWD_DEFINED__
typedef interface IHTMLDOMAttribute IHTMLDOMAttribute;
#endif     /* __IHTMLDOMAttribute_FWD_DEFINED__ */

#ifndef __IHTMLDOMAttribute2_FWD_DEFINED__
#define __IHTMLDOMAttribute2_FWD_DEFINED__
typedef interface IHTMLDOMAttribute2 IHTMLDOMAttribute2;
#endif     /* __IHTMLDOMAttribute2_FWD_DEFINED__ */

#ifndef __IHTMLDOMTextNode_FWD_DEFINED__
#define __IHTMLDOMTextNode_FWD_DEFINED__
typedef interface IHTMLDOMTextNode IHTMLDOMTextNode;
#endif     /* __IHTMLDOMTextNode_FWD_DEFINED__ */

#ifndef __IHTMLDOMTextNode2_FWD_DEFINED__
#define __IHTMLDOMTextNode2_FWD_DEFINED__
typedef interface IHTMLDOMTextNode2 IHTMLDOMTextNode2;
#endif     /* __IHTMLDOMTextNode2_FWD_DEFINED__ */

#ifndef __IHTMLDOMImplementation_FWD_DEFINED__
#define __IHTMLDOMImplementation_FWD_DEFINED__
typedef interface IHTMLDOMImplementation IHTMLDOMImplementation;
#endif     /* __IHTMLDOMImplementation_FWD_DEFINED__ */

#ifndef __IHTMLDOMNode_INTERFACE_DEFINED__

#define __IHTMLDOMNode_INTERFACE_DEFINED__

EXTERN_C const IID IID_IHTMLDOMNode;


MIDL_INTERFACE("3050f5da-98b5-11cf-bb82-00aa00bdce0b")
IHTMLDOMNode : public IDispatch
{
public:
    virtual HRESULT STDMETHODCALLTYPE get_nodeType(
         /* [out] */ long * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_parentNode(
         /* [out] */ IHTMLDOMNode* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
            /* [out] */ VARIANT_BOOL* fChildren) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_childNodes(
         /* [out] */ IDispatch* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_attributes(
         /* [out] */ IDispatch* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE insertBefore(
            /* [in] */ IHTMLDOMNode* newChild,/* [in] */ VARIANT refChild,/* [out] */ IHTMLDOMNode** node) = 0;

    virtual HRESULT STDMETHODCALLTYPE removeChild(
            /* [in] */ IHTMLDOMNode* oldChild,/* [out] */ IHTMLDOMNode** node) = 0;

    virtual HRESULT STDMETHODCALLTYPE replaceChild(
            /* [in] */ IHTMLDOMNode* newChild,/* [in] */ IHTMLDOMNode* oldChild,/* [out] */ IHTMLDOMNode** node) = 0;

    virtual HRESULT STDMETHODCALLTYPE cloneNode(
            /* [in] */ VARIANT_BOOL fDeep,/* [out] */ IHTMLDOMNode** clonedNode) = 0;

    virtual HRESULT STDMETHODCALLTYPE removeNode(
            /* [in] */ VARIANT_BOOL fDeep,/* [out] */ IHTMLDOMNode** removed) = 0;

    virtual HRESULT STDMETHODCALLTYPE swapNode(
            /* [in] */ IHTMLDOMNode* otherNode,/* [out] */ IHTMLDOMNode** swappedNode) = 0;

    virtual HRESULT STDMETHODCALLTYPE replaceNode(
            /* [in] */ IHTMLDOMNode* replacement,/* [out] */ IHTMLDOMNode** replaced) = 0;

    virtual HRESULT STDMETHODCALLTYPE appendChild(
            /* [in] */ IHTMLDOMNode* newChild,/* [out] */ IHTMLDOMNode** node) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nodeName(
         /* [out] */ BSTR * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_nodeValue(
         /* [in] */ VARIANT v) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nodeValue(
         /* [out] */ VARIANT * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_firstChild(
         /* [out] */ IHTMLDOMNode* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_lastChild(
         /* [out] */ IHTMLDOMNode* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_previousSibling(
         /* [out] */ IHTMLDOMNode* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nextSibling(
         /* [out] */ IHTMLDOMNode* * p) = 0;

};

#endif     /* __IHTMLDOMNode_INTERFACE_DEFINED__ */


#ifndef __IHTMLDOMNode2_INTERFACE_DEFINED__

#define __IHTMLDOMNode2_INTERFACE_DEFINED__

EXTERN_C const IID IID_IHTMLDOMNode2;


MIDL_INTERFACE("3050f80b-98b5-11cf-bb82-00aa00bdce0b")
IHTMLDOMNode2 : public IDispatch
{
public:
    virtual HRESULT STDMETHODCALLTYPE get_ownerDocument(
         /* [out] */ IDispatch* * p) = 0;

};

#endif     /* __IHTMLDOMNode2_INTERFACE_DEFINED__ */


#ifndef __IHTMLDOMAttribute_INTERFACE_DEFINED__

#define __IHTMLDOMAttribute_INTERFACE_DEFINED__

EXTERN_C const IID IID_IHTMLDOMAttribute;


MIDL_INTERFACE("3050f4b0-98b5-11cf-bb82-00aa00bdce0b")
IHTMLDOMAttribute : public IDispatch
{
public:
    virtual HRESULT STDMETHODCALLTYPE get_nodeName(
         /* [out] */ BSTR * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_nodeValue(
         /* [in] */ VARIANT v) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nodeValue(
         /* [out] */ VARIANT * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_specified(
         /* [out] */ VARIANT_BOOL * p) = 0;

};

#endif     /* __IHTMLDOMAttribute_INTERFACE_DEFINED__ */


#ifndef __IHTMLDOMAttribute2_INTERFACE_DEFINED__

#define __IHTMLDOMAttribute2_INTERFACE_DEFINED__

EXTERN_C const IID IID_IHTMLDOMAttribute2;


MIDL_INTERFACE("3050f810-98b5-11cf-bb82-00aa00bdce0b")
IHTMLDOMAttribute2 : public IDispatch
{
public:
    virtual HRESULT STDMETHODCALLTYPE get_name(
         /* [out] */ BSTR * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_value(
         /* [in] */ BSTR v) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_value(
         /* [out] */ BSTR * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_expando(
         /* [out] */ VARIANT_BOOL * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nodeType(
         /* [out] */ long * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_parentNode(
         /* [out] */ IHTMLDOMNode* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_childNodes(
         /* [out] */ IDispatch* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_firstChild(
         /* [out] */ IHTMLDOMNode* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_lastChild(
         /* [out] */ IHTMLDOMNode* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_previousSibling(
         /* [out] */ IHTMLDOMNode* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_nextSibling(
         /* [out] */ IHTMLDOMNode* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_attributes(
         /* [out] */ IDispatch* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ownerDocument(
         /* [out] */ IDispatch* * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE insertBefore(
            /* [in] */ IHTMLDOMNode* newChild,/* [in] */ VARIANT refChild,/* [out] */ IHTMLDOMNode** node) = 0;

    virtual HRESULT STDMETHODCALLTYPE replaceChild(
            /* [in] */ IHTMLDOMNode* newChild,/* [in] */ IHTMLDOMNode* oldChild,/* [out] */ IHTMLDOMNode** node) = 0;

    virtual HRESULT STDMETHODCALLTYPE removeChild(
            /* [in] */ IHTMLDOMNode* oldChild,/* [out] */ IHTMLDOMNode** node) = 0;

    virtual HRESULT STDMETHODCALLTYPE appendChild(
            /* [in] */ IHTMLDOMNode* newChild,/* [out] */ IHTMLDOMNode** node) = 0;

    virtual HRESULT STDMETHODCALLTYPE hasChildNodes(
            /* [out] */ VARIANT_BOOL* fChildren) = 0;

    virtual HRESULT STDMETHODCALLTYPE cloneNode(
            /* [in] */ VARIANT_BOOL fDeep,/* [out] */ IHTMLDOMAttribute** clonedNode) = 0;

};

#endif     /* __IHTMLDOMAttribute2_INTERFACE_DEFINED__ */


#ifndef __IHTMLDOMTextNode_INTERFACE_DEFINED__

#define __IHTMLDOMTextNode_INTERFACE_DEFINED__

EXTERN_C const IID IID_IHTMLDOMTextNode;


MIDL_INTERFACE("3050f4b1-98b5-11cf-bb82-00aa00bdce0b")
IHTMLDOMTextNode : public IDispatch
{
public:
    virtual HRESULT STDMETHODCALLTYPE put_data(
         /* [in] */ BSTR v) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_data(
         /* [out] */ BSTR * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE toString(
            /* [out] */ BSTR* String) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_length(
         /* [out] */ long * p) = 0;

    virtual HRESULT STDMETHODCALLTYPE splitText(
            /* [in] */ long offset,/* [out] */ IHTMLDOMNode** pRetNode) = 0;

};

#endif     /* __IHTMLDOMTextNode_INTERFACE_DEFINED__ */


#ifndef __IHTMLDOMTextNode2_INTERFACE_DEFINED__

#define __IHTMLDOMTextNode2_INTERFACE_DEFINED__

EXTERN_C const IID IID_IHTMLDOMTextNode2;


MIDL_INTERFACE("3050f809-98b5-11cf-bb82-00aa00bdce0b")
IHTMLDOMTextNode2 : public IDispatch
{
public:
    virtual HRESULT STDMETHODCALLTYPE substringData(
            /* [in] */ long offset,/* [in] */ long Count,/* [out] */ BSTR* pbstrsubString) = 0;

    virtual HRESULT STDMETHODCALLTYPE appendData(
            /* [in] */ BSTR bstrstring) = 0;

    virtual HRESULT STDMETHODCALLTYPE insertData(
            /* [in] */ long offset,/* [in] */ BSTR bstrstring) = 0;

    virtual HRESULT STDMETHODCALLTYPE deleteData(
            /* [in] */ long offset,/* [in] */ long Count) = 0;

    virtual HRESULT STDMETHODCALLTYPE replaceData(
            /* [in] */ long offset,/* [in] */ long Count,/* [in] */ BSTR bstrstring) = 0;

};

#endif     /* __IHTMLDOMTextNode2_INTERFACE_DEFINED__ */


#ifndef __IHTMLDOMImplementation_INTERFACE_DEFINED__

#define __IHTMLDOMImplementation_INTERFACE_DEFINED__

EXTERN_C const IID IID_IHTMLDOMImplementation;


MIDL_INTERFACE("3050f80d-98b5-11cf-bb82-00aa00bdce0b")
IHTMLDOMImplementation : public IDispatch
{
public:
    virtual HRESULT STDMETHODCALLTYPE hasFeature(
            /* [in] */ BSTR bstrfeature,/* [in] */ VARIANT version,/* [out] */ VARIANT_BOOL* pfHasFeature) = 0;

};

#endif     /* __IHTMLDOMImplementation_INTERFACE_DEFINED__ */



EXTERN_C const GUID GUID_HTMLDOMAttribute;



EXTERN_C const GUID DIID_DispHTMLDOMAttribute;


#ifndef _CAttribute_PROPDESCS_
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributenodeName;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributenodeValue;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributespecified;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributename;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributevalue;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributeexpando;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributenodeType;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributeparentNode;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributechildNodes;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributefirstChild;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributelastChild;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributepreviousSibling;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributenextSibling;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributeattributes;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCAttributeownerDocument;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCAttributeinsertBefore;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCAttributereplaceChild;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCAttributeremoveChild;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCAttributeappendChild;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCAttributehasChildNodes;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCAttributecloneNode;

#endif


EXTERN_C const GUID GUID_HTMLDOMTextNode;



EXTERN_C const GUID DIID_DispHTMLDOMTextNode;


#ifndef _CDOMTextNode_PROPDESCS_
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCDOMTextNodedata;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCDOMTextNodetoString;
EXTERN_C const PROPERTYDESC_BASIC_ABSTRACT s_propdescCDOMTextNodelength;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCDOMTextNodesplitText;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCDOMTextNodesubstringData;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCDOMTextNodeappendData;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCDOMTextNodeinsertData;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCDOMTextNodedeleteData;
EXTERN_C const PROPERTYDESC_METHOD s_methdescCDOMTextNodereplaceData;

#endif


EXTERN_C const GUID GUID_HTMLDOMImplementation;



EXTERN_C const GUID DIID_DispHTMLDOMImplementation;


#ifndef _CDOMImplementation_PROPDESCS_
EXTERN_C const PROPERTYDESC_METHOD s_methdescCDOMImplementationhasFeature;

#endif


#endif /*__dom_h__*/

